iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 7
0
Modern Web

從基礎學習 ThinkPHP系列 第 7

Day7-從基礎學習 ThinkPHP-ThinkPHP 目錄結構

  • 分享至 

  • xImage
  •  

前言

前面我們已經安裝好 ThinkPHP 5.1,那麼接下來並不是直接切入 ThinkPHP 開發,因為如果你不了解它的目錄結構,你會搞不清楚東西在哪裡,甚至該放哪裡,所以這一章節就讓我們來了解一下 ThinkPHP 的目錄結構吧!

ThinkPHP 目錄

首先先讓我們來看一下剛剛安裝好的 ThinkPHP 5.1 目錄結構 ↓

ThinkPHP 目錄結構

在這邊我會將最主要的目錄資料夾給列出來,這幾個是核心文件與目錄,所以請務必要記一下:

  • think - 命令字元的入口文件
    • 例如: php think run or php think v (查看版本號等)。
  • thinkphp 資料夾 - 框架核心
    • ThinkPHP 主要核心功能都是在這邊,一般來講我們是不會動到的。
  • public 資料夾 - 網站的入口資料夾
    • 早期 ThinkPHP 是將網站入口檔案放在根目錄,5.1 後改放在 public
  • route 資料夾 - 就是 route 的地方(廢話)
    • 我們許多 route 設定都會在這邊設置,所以底下通常只會只有一個檔案 router.php
  • config 資料夾 - 許多設置都在這邊
    • 底下包含了許多重要的設定檔,例如:database.php、session.php、cookie.php、log.php 等。
  • application 資料夾 - controller、model、view 等都會放在這裡
    • 後面我們會有許多設置與調整都是在這邊。

入口文件

讓我們先來讓我們來看一下 think 這個檔案,打開後可以看到裡面程式碼超級簡單

think

我們可以看到第 16 行是主要讀取框架的語法,在以前我開發使用 ThinkPHP 3.2.4 的時候,其實並不會讓核心框架目錄預設名稱,通常會改成 core 之類,主要是避免一些問題,但是基本上在 ThinkPHP 5.1 之後我個人非常不推薦修改目錄名稱,因為修改後你會有許多地方要做調整,基本上足夠讓你調老半天...

但是真正的默認入口文件是在 /public/index.php,而 think 就像我前面講的,它主要是給命令視窗的入口檔案,但是內容會跟 think 檔案 87% 像 ↓

index.php

如果你還是堅持要調整核心資料夾名稱的話,我這邊也提供我的調整方式給你參考,首先打開 /public/index.php 並修改成你要調整的名稱(這邊我是調整成 core,後面章節我會改回來原始名稱)。

core

接下來打開 think 檔案,一樣的動作 ↓

core

最後再將原本的 ThinkPHP 核心框架資料夾改成你要的即可(我是改成 core) ↓

core

接下來就試著運行看看 ThinkPHP 有沒有任何問題 ↓

ThinkPHP

當然我最後還是要提醒一下,我不建議修改核心目錄(ThinkPHP)唷。

application

application 將會是我們後面章節最常使用的地方,舉凡 Controller、Model、View 都會在這裡,但是這邊有一個地方非常特別,在預設 ThinkPHP 的狀況下,並不會替你建立 view & model 資料夾,正常狀況下你只會看到一個 controller ↓

controller

那後面我還會針對 application 做一些介紹以及程式碼的撰寫,所以這邊只是提出來稍微講一下而已。

結尾

部分地方我就沒特別去講解了,因為我們最主要會動到的資料夾其實大多都是在 application 下,頂多偶爾動一下 router.php 而已。

另外 ThinkPHP 的 URL 主要是透過 route 來決定,如果在沒有註冊路由的狀況下則會基於原始的方式做訪問,如官方手冊所提:

(以下擷取至開發手冊)

http://serverName/index.php(或者其它入口文件)/模块/控制器/操作/参数/值…

如果用原始的方式瀏覽是真的滿麻煩的(汗)。

本文將同步發表於:https://hsiangfeng.github.io/php/20190908/337959933/


上一篇
Day6-從基礎學習 ThinkPHP-安裝 ThinkPHP 安裝
下一篇
Day8-從基礎學習 ThinkPHP-MVC 模式
系列文
從基礎學習 ThinkPHP31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言